package com.xhsj.user.hr.system.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xhsj.user.hr.system.entity.TbHrZhaopinDemandApply;
import com.xhsj.user.hr.system.query.FindDimissionListQuery;
import com.xhsj.user.hr.system.vo.DimissionApplyAuditTaskVo;
import com.xhsj.user.hr.system.vo.MonthCountVo;
import com.xhsj.user.hr.system.vo.ZhaopinDemandApplyAuditTaskVo;
import org.apache.ibatis.annotations.Mapper;
import com.xhsj.user.hr.system.entity.TbHrApprovalDimissionApply;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.access.prepost.PreAuthorize;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * hr流程-离职申请表 Mapper 接口
 * </p>
 *
 * @author suxiaolin
 * @since 2020-09-08
 */
@Mapper
public interface TbHrApprovalDimissionApplyMapper extends BaseMapper<TbHrApprovalDimissionApply> {

    /**
     * 查询待审核任务
     * @author 苏小林
     * @date 2020/9/8 14:12
     * @param: page
     * @param: userId
     * @param: roleIds
     */
    IPage<DimissionApplyAuditTaskVo> findDimissionApplyRunTask(Page<TbHrApprovalDimissionApply> page, @Param("userId") Long userId, @Param("roleIds") List<Long> roleIds);

    /**
     * 查询历史任务
     * @author 苏小林
     * @date 2020/9/8 16:57
     * @param: page
     * @param: userId
     * @return: com.baomidou.mybatisplus.core.metadata.IPage<com.xhsj.user.hr.system.vo.DimissionApplyAuditTaskVo>
     */
    IPage<DimissionApplyAuditTaskVo> findDimissionApplyHiTask(Page<TbHrApprovalDimissionApply> page, @Param("userId") Long userId);

    /**
     * 查询离职申请列表
     * @author 苏小林
     * @date 2020/9/9 17:01
     * @param: page
     * @param: userId
     * @return: com.baomidou.mybatisplus.core.metadata.IPage<com.xhsj.user.hr.system.entity.TbHrApprovalDimissionApply>
     */
    IPage<TbHrApprovalDimissionApply> findApplyList(Page<TbHrApprovalDimissionApply> page, @Param("userId") Long userId);

    /**
     * 查询人事待办列表
     * @author 苏小林
     * @date 2020/11/13 14:12
     * @param: page
     * @param: userId
     * @return: com.baomidou.mybatisplus.core.metadata.IPage<com.xhsj.user.hr.system.entity.TbHrApprovalDimissionApply>
     */
    IPage<TbHrApprovalDimissionApply> findToDoList(Page<TbHrApprovalDimissionApply> page, @Param("userId") Long userId);

    /**
     * 查询交接列表
     * @author 苏小林
     * @date 2020/9/9 17:36
     * @param: page
     * @param: userId
     * @return: com.baomidou.mybatisplus.core.metadata.IPage<com.xhsj.user.hr.system.entity.TbHrApprovalDimissionApply>
     */
    IPage<TbHrApprovalDimissionApply> findHandoverList(Page<TbHrApprovalDimissionApply> page, @Param("userId") Long userId);

    /**
     * 查询用户是否提交离职申请 且审核完成
     * @author 苏小林
     * @date 2020/9/11 15:15
     * @param: id
     * @return: java.lang.Integer
     */
    Map<String,Object> findUserWhetherDimission(@Param("id") Long id);

    /**
     * 查询每月离职人数
     * @author 苏小林
     * @date 2020/9/14 16:06
     * @param: date
     * @return: java.util.List<com.xhsj.user.hr.system.vo.MonthCountVo>
     */
    List<MonthCountVo> getCountByDate(@Param("date") String date);

    /**
     * 查询离职库列表
     * @author 苏小林
     * @date 2020/9/15 17:27
     * @param: page
     * @param: data
     * @return: com.baomidou.mybatisplus.core.metadata.IPage<com.xhsj.user.hr.system.entity.TbHrApprovalDimissionApply>
     */
    IPage<TbHrApprovalDimissionApply> findDimissionList(Page<TbHrApprovalDimissionApply> page, @Param("data") FindDimissionListQuery data);

    /**
     * 根据离职时间查询
     * @author 苏小林
     * @date 2020/11/2 16:38
     * @param: now
     * @return: java.util.List<com.xhsj.user.hr.system.entity.TbHrApprovalDimissionApply>
     */
    List<Long> findListByLeaveDate(@Param("date") LocalDate date);

    /**
     * 查询applyUserId 是否存在
     * @author 苏小林
     * @date 2020/11/3 13:44
     * @param: applyUserId
     * @return: int
     */
    int getApplyUserIdIsExist(@Param("applyUserId") Long applyUserId);
    /**
     * @Description:  查询当月入职人数-截至到今天
     * @Author: liuqinghua
     * @Date: 2021/9/9
     */
    MonthCountVo getCunrrentCountByDate();
}
